﻿#ifndef FINERY_H
#define FINERY_H

#include <QDebug>
#include "Person.h"

class Finery : public Person
{
protected:
    Person* m_component = nullptr;
public:
    virtual void Decorate(Person* component) {
        m_component = component;
    }
    virtual void Show() override {
        if (m_component != nullptr) {
            m_component->Show();
        }
    }
    virtual ~Finery() {}
};

class TShirts : public Finery
{
public:
    virtual void Show() override {
        qDebug() << "大T恤 ";
        Finery::Show();
    }
    virtual ~TShirts() {}
};

class BigTrouser : public Finery
{
public:
    virtual void Show() override {
        qDebug() << "垮裤 ";
        Finery::Show();
    }
};

class Sneakers : public Finery
{
public:
    virtual void Show() override {
        qDebug() << "破球鞋 ";
        Finery::Show();
    }
};

class Suit : public Finery
{
public:
    virtual void Show() override {
        qDebug() << "西装 ";
        Finery::Show();
    }
};

class Tie : public Finery
{
public:
    virtual void Show() override {
        qDebug() << "领带 ";
        Finery::Show();
    }
};

class LeatherShoes : public Finery
{
public:
    virtual void Show() override {
        qDebug() << "皮鞋 ";
        Finery::Show();
    }
};

#endif // FINERY_H
